$(function(){
	$.loadCssFile(getServerPath()+"/resources/css/tipbox.css");
});
jQuery.extend({    
	addLoginWindow:function(okCall,cancelCall){
		var loginDialog = $("#loginDialog");
		if(loginDialog.length == 0){
			var html = "<div id='loginDialog' class='easyui-dialog' style='width: 300px; height: 160px; padding: 5px; background: #fafafa;'>" +
			"<div region='center' border='false' style='padding: 10px; background: #fff; border: 1px solid #ccc;'>"+
			"<table cellpadding=3>"+
			"<tr>"+
			"<td>用户名：</td>"+
			"<td><input id='txtAccount' type='text' class='txt01' /></td>"+
			"</tr>"+
			"<tr>"+
			"<td>密码：</td>"+
			"<td><input id='txtPassword' type='password' class='txt01' /></td>"+
			"</tr>"+
			"</table>"+
			"</div>"+
			"</div>";
			$('body').append(html);
		}
		$('#loginDialog').dialog({
			title:"登录",
			iconCls:'icon-reload',
			buttons:[{
				text:'确定',
				iconCls:'icon-ok',
				handler:function(){
					//确定按钮执行的方法
					var account = $("#loginDialog #txtAccount").val();
					if(account == ""){
						$.messager.alert('提示', '请输入用户名', 'error');
						return;
					}
					var pwd = $("#loginDialog #txtPassword").val();
					if(pwd == ""){
						$.messager.alert('提示', '请输入密码', 'error');
						return;
					}
					var path = getServerPath();
					$.tipbox("正在登录，请稍后……",'loading');
					var result = $.ajax({
						url: getServerPath()+'/admin/dlgLogin.do',
						data: {'user.account':account,'user.password':pwd},
						type: 'post',
						dataType: 'json',
						async: false,
						cache: false
					}).responseText;
					if(typeof(result) == "string"){
						result = eval("("+ result +")");
					}
					$.closeTipbox();
					$.ajaxResultHandler(result,function(){
						var user = result.messageObj;
						if(typeof(user) == 'string'){
							user = eval("("+ user +")");
						}
						var userId = $(window.parent.document).find("#sessionUserId").val();
						if(userId != undefined && userId != ""){
							if(userId != user.id){
								window.parent.location.href = path+'/admin/index';
							}else{
								if(typeof(okCall) == 'function'){
									okCall(user);
								}
								$('#loginDialog').dialog('close');
							}
						}else{
							if(typeof(okCall) == 'function'){
								okCall(user);
							}
							$('#loginDialog').dialog('close');
						}
					},'admin');

				}
			},{
				text:'取消',
				iconCls:'icon-cancel',
				handler:function(){
					if(typeof(cancelCall) == 'function'){
						cancelCall();
					}
					$('#loginDialog').dialog('close');
				}
			}]
		});
	},
	ajaxResultHandler:function(json,callback,loginCall){
		$.closeTipbox();
		if(typeof(json) == "string"){
			json = eval("("+ json +")");
		}
		if(typeof(json.returnCode) == 'undefined'){//如果不是用MyResult这个类返回的json对象
			if(typeof(callback)=='function'){
				callback(json);
			}
			return;
		}
		var obj = json.messageObj;
		switch(json.returnCode){
		case 0://正确返回
			callback(obj);
			break;
		case 1://可控错误、异常、友好提示
			$.messager.alert('系统提示',obj, 'error');
			break;
		case 2://登录超时
			$.messager.alert('系统提示','登陆超时，请重新登陆', 'warning',function(){
				$.addLoginWindow(function(user){
					if(typeof(loginCall) == 'function'){
						loginCall(user);
					}
				},function(){
					//取消按钮执行的方法
				});
			});
			break;
		case 3://权限不足
			$.messager.alert('系统提示', '操作未完成,权限受限,请联系管理员', 'warning');
			break;
		case -1://系统错误
			try{
				obj = obj.replace(new RegExp('\n','gm'),'');
				obj = obj.replace(new RegExp('\r','gm'),'');//替换tab和换行
				obj = eval("("+ obj +")");
				$.messager.alert('系统错误', '系统发生错误,请联系管理员：'+obj.exSuggestion, 'error');
			}catch(e){
				$.messager.alert('系统错误', '系统发生错误,请联系管理员!', 'error');
			}
		}
	},
	ajaxResultProcess:function(json,normal,error,loginCall){
		$.closeTipbox();
		if(typeof(json) == "string"){
			json = eval("("+ json +")");
		}
		if(typeof(json.returnCode) == 'undefined'){//如果不是用MyResult这个类返回的json对象
			if(typeof(normal)=='function'){
				normal(json);
			}
			return;
		}
		var obj = json.messageObj;
		switch(json.returnCode){
		case 0://正确返回
			normal(obj);
			break;
		case 1://可控错误、异常、友好提示
			error(obj);
			break;
		case 2://登录超时
			$.messager.alert('系统提示','登陆超时，请重新登陆', 'warning',function(){
				$.addLoginWindow(function(user){
					if(typeof(loginCall) == 'function'){
						loginCall(user);
					}
				},function(){
					//取消按钮执行的方法
				});
			});
			break;
		case 3://权限不足
			$.messager.alert('系统提示', '操作未完成,权限受限,请联系管理员', 'warning');
			break;
		case -1://系统错误
			try{
				obj = obj.replace(new RegExp('\n','gm'),'');
				obj = obj.replace(new RegExp('\r','gm'),'');//替换tab和换行
				obj = eval("("+ obj +")");
				$.messager.alert('系统错误', '系统发生错误,请联系管理员：'+obj.exSuggestion, 'error');
			}catch(e){
				$.messager.alert('系统错误', '系统发生错误,请联系管理员!', 'error');
			}
		}
	},
	loadCssFile:function(files, callback, flag){//如果已经存在css文件flag为false则不调用callback，如果flag为true，无论css文件是否已经引入都调用callback
		var hasFile = function(url) {//判断是否已经存在css的方法
			var contains = false;
			var files = document.getElementsByTagName("link");
			var type = "href";
			for (var i = 0, len = files.length; i < len; i++) {
				if (files[i].getAttribute(type) == url) {
					contains = true;
					break;
				}
			}
			return contains;        
		};
		var loadFile = function(element, callback) {            
			var p = parent && parent != undefined ? parent : "head";
			document.getElementsByTagName("head")[0].appendChild(element);            
			if (callback) {
				if ($.browser.msie) {
					element.onreadystatechange = function () {
						if (this.readyState == 'loaded' || this.readyState == 'complete') {
							callback();
						}
					};
				} else if ($.browser.mozilla) {
					element.onload = function () {
						callback();                    
					};
				} else {
					callback();
				}
			}
		};
		var urls = files && typeof (files) == "string" ? [files] : files;
		for (var i = 0, len = urls.length; i < len; i++) {
			if (hasFile(urls[i])) {
				if(flag)callback();
				break;
			}
			var cssFile = document.createElement("link");
			cssFile.setAttribute('type', 'text/css');
			cssFile.setAttribute('rel', 'stylesheet');
			cssFile.setAttribute('href', urls[i]); 
			loadFile(cssFile, callback);
		}
	},
	tipbox: function(message, icon, opts){//'success'、'warning'、'error'、'loading',info
		var options = $.extend({
			close: function(){},
			modal: false,
			timeout: 2000
		}, opts || {});
		$('body').find('#my_tipbox').remove();
		var box = $('<div/>',{id:'my_tipbox','class': 'my_tipbox_layer_wrap'});
		var tip = $('<span/>',{'class': 'my_tipbox_layer'}).css('z-index',10000);
		switch(icon){
		case 'success':
			$('<span/>',{'class': 'gtl_ico_succ'}).appendTo(tip);
			break;
		case 'warning':
			$('<span/>',{'class': 'gtl_ico_hits'}).appendTo(tip);
			break;
		case 'error':
			$('<span/>',{'class': 'gtl_ico_fail'}).appendTo(tip);
			break;
		case 'loading':
			$("<span class='gtl_ico_clear'></span><span class='loading'></span>").appendTo(tip);
			break;
		default:
			$('<span/>',{'class': 'gtl_ico_clear'}).appendTo(tip);
		break;
		}
		tip.append($('<span/>',{text:' '+message, id:'tip_message'})).append('<span class="gtl_end"></span>');
		box.append(tip);
		var top = ($(window).height() - 50) / 2 +"px";
		box.css('top',top).appendTo('body');
		if(options.modal){
			$('<div/>',{'class': 'my_tipbox_model'}).appendTo('body');
		}
		if(icon != 'loading'){
			options.timeout = options.timeout > 0? options.timeout:2000;
			setTimeout(function(){
				$.closeTipbox(options.close);
			}, options.timeout);
		}
	},
	closeTipbox: function(callback){
		$('body').find('#my_tipbox').fadeOut("normal",function(){
			$('.my_tipbox_model').remove();
			$(this).remove();
			if(callback)callback();
		});
	}
	
	
});

function getServerPath(){
	if(typeof(contextpath) != 'undefined'){
		return contextpath;
	}
	var pathName = document.location.pathname;
	var index = pathName.substr(1).indexOf("/");
	var result = pathName.substr(0,index+1);
	return result;
}